﻿//// link.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
////
//
//#include <iostream>
//
//int main()
//{
//    std::cout << "Hello World!\n";
//}
//
//// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
//// 调试程序: F5 或调试 >“开始调试”菜单
//
//// 入门使用技巧: 
////   1. 使用解决方案资源管理器窗口添加/管理文件
////   2. 使用团队资源管理器窗口连接到源代码管理
////   3. 使用输出窗口查看生成输出和其他消息
////   4. 使用错误列表窗口查看错误
////   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
////   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
/*
 * @Author: WenZeng Cai
 * @Date: 2021-03-09 20:32:47
 * @LastEditors: your name
 * @LastEditTime: 2021-03-09 21:13:50
 * @Description: file content
 */
#define _CRT_SECURE_NO_WARNINGS；
#pragma warning(disable:4996)；
#include<stdio.h>
#include <cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
typedef struct stuInFo {
    char stuName[10];
    int Age;

}ElemType;

typedef struct node
{
  
    ElemType data;
    struct node* next;

}ListNode,*ListPtr;

ListPtr CreateList() {

    ListPtr p = (ListNode*)malloc(sizeof(ListNode));
    ListPtr q = p;
    printf("请输入学生人数:");
    int stuNum;
    scanf("%d", &stuNum);
    while (stuNum > 0) {
        printf("请输入同学姓名:");
        ElemType stu;
        char name[10] = { 0 };
        scanf("%s",name);
        printf("%s\n",name);
        strcpy(stu.stuName,name);
        printf("请输入同学年龄:");
        int age;
        scanf("%d",&age);
        stu.Age = age;
        ListPtr tmp = (ListPtr)malloc(sizeof(ListNode));
        tmp->data = stu;
        tmp->next = NULL;
        q->next = tmp;
        q = q->next;
        stuNum--;
      
    }
    printf("%d\n",p->next->next->data.Age);
    return p;

}
void PrintList(ListPtr ListHead) {
    ListPtr q = ListHead;
    while (q->next != NULL) {
        printf("姓名--:%s", q->next->data.stuName);
        printf("年龄--:%d:", q->next->data.Age);
        printf("\n");
        q = q->next;
    }

}
ListPtr InsertList(ListPtr  ListHead, int n, ElemType data) {
    ListPtr q = ListHead;
    for (int i = 1; i < n; i++) {
        if (q == NULL) {
            printf("插入无效!");
            return NULL;
        }
        q = q->next;
    }
    ListPtr i = (ListPtr)malloc(sizeof(ListNode));
    strcpy(i->data.stuName,data.stuName);
    i->data.Age = data.Age;
    i->next = q->next;
    q->next = i;
    return ListHead;


}
ListPtr link = NULL;
int main(int argc, char argv[]) {
    while (1)
    {
        printf("1 Create List\n");
        printf("2 Print List\n");
        printf("3 Insert List\n");
        printf("4 Quit List\n");
        char command;
        scanf("%s",&command);
        ElemType stu;
       
        switch (command)
        {
        case '1':
            link = CreateList();
            break;
        case '2':
        {
            PrintList(link);
            break;
        }
        case '3':
        {
            printf("请输入插入位置:");
            int index;
            scanf("%d", &index);
            char name[10] = { 0 };
            printf("请输入同学姓名:");
            scanf("%s", name);
            strcpy(stu.stuName, name);
            printf("请输入同学年龄:");
            int age;
            scanf("%d", &age);
            stu.Age = age;
            InsertList(link,index,stu);
            break;
        }
        case '4':
            return 0;
        default:
            break;
        }
    }
    return 0;

}

